package com.qcby.xmdemo.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 普通 Map 版本
 */
@RequestMapping("/user")
@RestController
public class UserController {

    // 缓存 ID 集合
    private Map<String, Integer> reqCache = new HashMap<>();

    @RequestMapping("/add")
    public String addUser(String id) {
        // 非空判断(忽略)...
        synchronized (this.getClass()) {
            // 重复请求判断
            if (reqCache.containsKey(id)) {
                // 重复请求
                System.out.println("请勿重复提交！！！" + id);
                return "执行失败";
            }
            // 存储请求 ID
            reqCache.put(id, 1);
        }
        // 业务代码...
        System.out.println("添加用户ID:" + id);
        return "执行成功！";
    }

    // 最大容量 100 个，根据 LRU 算法淘汰数据的 Map 集合
//    private LRUMap<String, Integer> reqCache = new LRUMap<>(100);
//    @RequestMapping("/add")
//    public String addUser1(String id) {
//        // 非空判断(忽略)...
//        synchronized (this.getClass()) {
//            // 重复请求判断
//            if (reqCache.containsKey(id)) {
//                // 重复请求
//                System.out.println("请勿重复提交！！！" + id);
//                return "执行失败";
//            }
//            // 存储请求 ID
//            reqCache.put(id, 1);
//        }
//        // 业务代码...
//        System.out.println("添加用户ID:" + id);
//        return "执行成功！";
//    }
}
